Time (or phase) accumulators are commonly used to track the current time in a digital circuit. A time accumulator operates by adding a time increment to the current time at a rate called the clock frequency. The time increment may be fixed, variable or time-varying. An example of a time-varying implementation is a servo-loop that is used to vary the time increment in order to keep the time accumulator in sync with an external time reference. The higher the clock frequency, the higher the resolution of the time accumulator and the more accurately the time accumulator can be used to time events. For example, a time accumulator can be used to set a timer value, record the time of an external event (i.e., a timestamp) or generate a trigger signal for an external event at a given time.
However, a higher clock frequency necessarily reduces the time available to calculate the addition of the time increment and any other operations that need to be performed on the time increment value (e.g., servo-loop calculations). If the time accumulator is implemented in a device that operates at a high clock frequency that does not allow enough time for the time accumulator to complete all of its calculations before the next clock, the current time recorded by the time accumulator may be inaccurate. Solutions to this problem include using faster hardware in the time accumulator or relaxing the accuracy requirements of the device and using a lower clock frequency, thereby giving the time accumulator more time between clock pulses in which to perform the calculations. However, faster hardware is usually more expensive and, in many applications, reducing the accuracy of the device may not be desirable. Therefore, there is a need for a slower time accumulator that is capable of operating at a high clock frequency.